This stack eliminates script based viruses which spread themselves by appending the scripts of other stacks with additional instructions which in turn infects every stack they come in contact with. The original virus of this ilk is called “merryxmas.”
merryxmas Vaccine The Next Generation
Since the appearance of merryxmas, other strains have surfaced such as merry2xmas, Lopez and others too crude to mention. Version 3, the third generation of this stack, is a broad spectrum vaccine that catches ’em all.
What the viruses do
By design, most of these viruses are intended only to replicate themselves in other stacks. The worst they are intended to do is quit (not crash) HyperCard unexpectedly. An unintended problem is that portions of other scripts can get sucked into the virus script. The results can be confusing and frustrating.
Another HyperTalk based virus that merryxmas Vaccine now catches is “pickle” also known as “HC 9507.” The pickle virus is a nasty creation that copies not only itself into the scripts of random stacks, it copies resources — several of which are bastardized copies of Frédéric Rinaldi’s XCMDs & XFCNs. If your stack already contains resources with the same names or ID numbers — they get clobbered. Pickle is also a crasher.
Requirements
This stack requires HyperCard v2.1 or later. This is to handle System 7 aliases. System 7 is not required. Color monitors (optional) will display “status colors.”
If you use a compression utility such as AutoDoubler™, be sure to have adequate free space on the volume being checked. Stacks have a way of expanding as they are being examined.
This stack needs to run unlocked in order to display its findings.
What this stack will do
For a selected stack, folder or entire volume, this stack will peek at the stack scripts (without opening the stacks) and strip out the virus code.
A bonus feature is the option to compact those stacks that have free space in them. Don’t worry about locked stacks — merryxmas Vaccine will unlock them as needed and put them back just the way it found them.
This stack will also offer to lock the Home stack against future infections. This is the same as checking the “Locked” checkbox in the Get Info window and can be unlocked at any time by clicking once on the icon of the Home stack, choosing Get Info from the File menu, then unchecking the checkbox.
How to use this stack
Step 1. If you know, or suspect that the Home stack is infected, it is best
to replace it with a copy from your original disk first.
Step 2. Open this stack and click the “Disinfect Stacks” button.
Step 3. Select the stack, folder or volume (disk) you wish to disinfect.
Thanks to this version’s ability to disinfect itself upon opening, you no longer have to be concerned with keeping a locked copy to protect it from infection.
To take this stack out for a test run, use it to scan a floppy disk.
Locked volumes will be scanned without making changes.
The scripts
The code is based on a copy of an infected stack brought to my attention by Ken Dunham at LaGrande Middle School. It was developed on my own time, at home, for use in the public domain.
Soapbox
Viruses are unworthy creations for such clever and talented people.
It is my hope that the authors of script based viruses will realize the destructive impact that pranks like this have in terms of lost time & productivity and find inspiration for more constructive contributions.
Copycat virus spreaders on the other hand are neither clever nor talented.
They are small minded trouble makers, low on the food chain.
Bill Swagerty
AOL: Bill DS
Internet: billds@aol.com
Known Problems
Sometimes the external function used to select a folder does not enable the Select button.
A workaround is to cancel and try again. This seems to give it the virtual WHACK it needs to jog the Select button into service.
Version History & Acknowledgements
Version 3.3
-Made compatible with System 8.1. Apple's FilePath external function no
longer works when selecting individual stacks or applications.
-A test in version 3.2 for scripting languages raised the HyperCard
requirement to version 2.2. This version restores backward compatibility
with HyperCard version 2.1.
Version 3.2
*Jacque Gay for bringing the merryxmas “antibody” to my attention.
Unfortunately, while it may have good intentions, it is by definition a
virus itself. It doesn’t do any harm, but it does quietly insert itself into
the Home stack and others in much the same way merryxmas does.
Version 3.2 removes the antibody.
-Now avoids prompts for the Scriptable Text Editor with certain stacks.
Version 3.1
-Improved detection of infections in very large standalone stacks.
Version 3.0
-Now scans itself for viruses and eliminates them upon opening.
-Created two new XFCNs for better script salvaging performance.
-Now eliminates virus code from the unused portion of the data fork to
help commercial utilities that can’t tell what’s used from what isn’t.
-New DNACheck XFCN to catch all strains of the merryxmas virus including
a destructive strain called “crudshot.”
-Removes the “pickle” virus, a HyperTalk virus not related to merryxmas.
*Jacque Gay for excellent brainstorming and thorough testing.
*Bill Stafford for pointing out how compacting could work as intended.
*Ken Dunham for pointing out a resume stack window loading problem.
*Till Stegers for suggesting the option to save reports to a file on disk.
Version 2.0
*Jacque Gay for ideas on broader detection and protection techniques.
*Ralph Gross, Batavia Middle School for isolating additional virus strains.
-Now employs a custom XFCN to catch more strains of merryxmas.
-Abandoned attempts at inoculating the Home stack in favor of locking it.
-Added provision for scanning standalone stack applications.
Version 1.5
*Dennis Kane for bringing the misuse of a reserved word to my attention.
-Added an option to inoculate the Home stack against future infections.
-Made the color indicator move with the card when the window is moved.
-Added a button for printing the activity report at the end of a scan.
-Added a musical completion notice.
Version 1.4
*Ronald Zellner, Texas A&M University for better inoculation strings.
-Added provision for scanning an individual stack or folder.
-Enhanced to display colors on monitors set for more than 256 colors.
Version 1.3
-To accommodate accidental mutations, the vaccine now removes
everything from the virus code on down from infected stack scripts.
-Stacks are assumed to be Finder locked if IsFinderLocked fails.
Version 1.2
*Mark Johnson for pointing out GetDir’s weakness for names with commas.
-Color indicator light left red if any stacks could not be disinfected.
Version 1.1
-Accommodated the way Mac Pluses respond to the MonitorConfig XFCN.
Version 1.0
*Ken Dunham <antivirus.guide@miningco.com> for telling me about the virus.
*Bill Marriott for the straight HyperTalk progress bar.